	 > AAOCG <> AAOCG <> AAOCG <> AAOCG <> AAOCG < 

CrAcKinG TutoRiaL bY ChendLer

stuff:

Prog: Tomb Raider 4 - The Last Revelation
protect: cd-Check
skill: Advanced NewBies

tools:

- SoftIce
- w32dasm v8.9
- Kartka papieru (duza) i olowek.
- Mozg.
- Chwila czasu
- Oryginalna gra

Topic: Jak zlamac Tomb Raider 4 - The Last Revelation
_______________________________________________________

Wstep:

Witam znow po dosc nie krotkiej przerwie. Nie bedziemy
juz zajmowac sie crackmesami tylko czyms innym.
Chcialem zaprezentowac tutor o tym jak rozwalic
cd-checka. Na poczatek wezmiemy prosta gierke potem
moze sie zobaczy. Dlaczego nie progi? Otoz w programach
nie ma nic z czym nie powinniscie sobie poradzic jezeli
znajde trudniejszy to go opisze (mam nadzieje)
__________________________________________________

Do dziela:

No tak jeszcze troche pogledze otoz:
- aby widziec efekty rozwalonego cd-checka
  trzeba przekopiowac do danego katalogu gdzie
  masz gre to:

/Audio
/Data
/Fmv

i pliki

English.dat & Os.dat & Larac.mov & Lang.dat & Script.dat

To dalej uruchom gre bez cdka i co widzisz?

Tomb Raider - The Last Revelation CD

zapamietaj ten komunikat ok?

____________________________________________________

No od razu po uruchomieniu gry widac ze ta gra ma
pare niedociagniec to je naprawimy ok?
spoko to teraz bierzemy w32dasm i desamblerujemy
tomb4.exe. mAsz?

Spoko to poszukaj w SDR takiego komunikatu:

"Tomb Raider - The Last Revelation "

i kliknij na nim podwojnie. Zamknij okno sdr i zobaczysz taki kod:

:0048D8B3 84C0                    test al, al
:0048D8B5 0F8500040000            jne 0048DCBB
:0048D8BB E8F060FEFF              call 004739B0
:0048D8C0 84C0                    test al, al
:0048D8C2 7525                    jne 0048D8E9

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0048D8E7(C)
|
:0048D8C4 6A25                    push 00000025

* Possible StringData Ref from Data Obj ->"Tomb Raider"
                                  |
:0048D8C6 6838354B00              push 004B3538

* Possible StringData Ref from Data Obj ->"Tomb Raider - The Last Revelation "
                                        ->"CD"

Mowi ci to cos. ok jesli jestes jeszcze malo doswiadczony w cracku
to nic tu sam nie rob. Popatrz na ten kod:

:0048D8BB E8F060FEFF              call 004739B0 ;< co tu jest? --
:0048D8C0 84C0                    test al, al                    |
:0048D8C2 7525                    jne 0048D8E9                   |
      ___________________________________________________________|
     |
   -----
:004739B0 83EC18                  sub esp, 00000018
:004739B3 A1AC174B00              mov eax, dword ptr [004B17AC]
:004739B8 8B0DB0174B00            mov ecx, dword ptr [004B17B0]
:004739BE 8B15B4174B00            mov edx, dword ptr [004B17B4]
:004739C4 53                      push ebx
:004739C5 8944240C                mov dword ptr [esp+0C], eax
:004739C9 66A1B8174B00            mov ax, word ptr [004B17B8]
:004739CF 56                      push esi
:004739D0 57                      push edi
:004739D1 894C2418                mov dword ptr [esp+18], ecx
:004739D5 8954241C                mov dword ptr [esp+1C], edx
:004739D9 6689442420              mov word ptr [esp+20], ax

* Reference To: KERNEL32.GetLogicalDrives, Ord:0120h
                                  |
:004739DE FF15E4804A00            Call dword ptr [004A80E4]
:004739E4 8D4C240C                lea ecx, dword ptr [esp+0C]

* Possible StringData Ref from Data Obj ->"A:\"
                                  |
:004739E8 68A8174B00              push 004B17A8
:004739ED 51                      push ecx
:004739EE 8BD8                    mov ebx, eax
:004739F0 C605A023530041          mov byte ptr [005323A0], 41

* Reference To: KERNEL32.lstrcpyA, Ord:0302h
                                  |
:004739F7 FF15E8804A00            Call dword ptr [004A80E8]
:004739FD 85DB                    test ebx, ebx
:004739FF 7461                    je 00473A62

* Reference To: KERNEL32.GetDriveTypeA, Ord:0104h
                                  |
:00473A01 8B3DEC804A00            mov edi, dword ptr [004A80EC]

* Reference To: KERNEL32.CreateFileA, Ord:0034h
                                  |
:00473A07 8B35F0804A00            mov esi, dword ptr [004A80F0]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00473A60(C)
|
:00473A0D F6C301                  test bl, 01
:00473A10 743E                    je 00473A50
:00473A12 8A15A0235300            mov dl, byte ptr [005323A0]
:00473A18 8D44240C                lea eax, dword ptr [esp+0C]
:00473A1C 50                      push eax
:00473A1D 88542410                mov byte ptr [esp+10], dl
:00473A21 FFD7                    call edi
:00473A23 83F805                  cmp eax, 00000005
:00473A26 7528                    jne 00473A50
:00473A28 8A0DA0235300            mov cl, byte ptr [005323A0]
:00473A2E 6A00                    push 00000000
:00473A30 6880000000              push 00000080
:00473A35 6A03                    push 00000003
:00473A37 6A00                    push 00000000
:00473A39 6A00                    push 00000000
:00473A3B 8D542428                lea edx, dword ptr [esp+28]
:00473A3F 6800000080              push 80000000
:00473A44 52                      push edx
:00473A45 884C2430                mov byte ptr [esp+30], cl
:00473A49 FFD6                    call esi
:00473A4B 83F8FF                  cmp eax, FFFFFFFF
:00473A4E 751B                    jne 00473A6B

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00473A10(C), :00473A26(C)
|
:00473A50 8A0DA0235300            mov cl, byte ptr [005323A0]
:00473A56 FEC1                    inc cl
:00473A58 D1EB                    shr ebx, 1
:00473A5A 880DA0235300            mov byte ptr [005323A0], cl
:00473A60 75AB                    jne 00473A0D

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004739FF(C)
|
:00473A62 5F                      pop edi
:00473A63 5E                      pop esi
:00473A64 32C0                    xor al, al
:00473A66 5B                      pop ebx
:00473A67 83C418                  add esp, 00000018
:00473A6A C3                      ret

UfF ale to przy dlugie co tu jest:

- GetLogicalDrives -|
- GetDriveTypeA    -| obie te funkcje maja zamiar zlokalizowac naped cd-rom

no i reszta kodu ktora nas nie interesuje to powrocmy do naszego:

:0048D8BB E8F060FEFF              call 004739B0
:0048D8C0 84C0                    test al, al
:0048D8C2 7525                    jne 0048D8E9

Dobra jezeli ten call ma za zadanie sprawdzenie cd-romu a my chcemy aby nie
sprawdzal czy jest original cd i chodzila gierka z twardego to co mamy zrobic?

JEzeli juz wiesz to dobrze dal tych ktorzy nie wiedza rozwiazanie:

nOp x5

Czyli nanormalniej w swiecie wynopowac tego call a sprawdzenie odejdzie w
niepamiec. Dobra to wszystko? nIE skok co teraz z nim
zmien - 7525 - na EB25 i uwierz mi mozesz grac z twardego.
_____________________________________________________________________

Wow kolejny raz udalo nam sie dopiac celu.

	 > AAOCG <> AAOCG <> AAOCG <> AAOCG <> AAOCG < 

CrAcKinG TutoRiaL bY ChendLer

chendler19@poczta.onet.pl
